using System.Collections.Generic;
using Framework.Domain;
using Framework.Unity;

namespace Framework.Core
{
    public interface ICase : IHaveWorkItems
    {
        string Ref { get; }
        CaseId Id { get; }
        IUserPrincipal Owner { get; }
        string System { get; }
        int FlowId { get; }
    }

    public interface ICaseDetails : ICase
    {
        int StageId { get; }
        int StageNumber { get; }
        bool IsPriority { get; }
        string Title { get; }
        int Priority { get; }
        T GetThe<T>();
        string Info1 { get; }
        string Info2 { get; }
        string Info3 { get; }
        void SetSystem(string systemName);
        IEnumerable<string> Tags { get; }
        bool HasTag(string tagKey);
        bool IsOpen { get; }
        IContainer CaseObjectContainer { get; }
        void UpdateReferenceData();
        bool IsRestricted { get; set; }
    }
}